//
// Copyright (C) [2024] Xingyun Integrated Circuit, Inc.
//
// GreenCode was a private technology asset of Xingyun Integrated Circuit， Inc （Confidential）
//  Author: Shawn.Tan
//  Date : 2025.10.28
//
//  History : Initial Version 2025.10.28
//

//
#ifndef Green_SetupRootPageTableGPGPU_H
#define Green_SetupRootPageTableGPGPU_H

#include <vector>

#include "MemoryManager.h"
#include "PageTable.h"
#include "Register.h"
#include "VmasControlBlock.h"

namespace Green {

  /*!
    \class SetupRootPageTableGPGPU
    \brief Base class for Setting up root page table.   : public VmasControlBlock
  */
  class SetupRootPageTableGPGPU {
  public:
    SetupRootPageTableGPGPU(); //!< Default constructor.
    ~SetupRootPageTableGPGPU(); //!< Destructor.
    uint64 SetupRootPageTable(uint32 tableSize, MemoryManager* pMemMgr, EMemBankType bankType, const RegisterFile* pRegFile, const std::string& regName, const ConstraintSet* usable); //!< setup root table register.

  private:
    SetupRootPageTableGPGPU(const SetupRootPageTableGPGPU& rOther) { }
  };
}

#endif //Green_SetupRootPageTableGPGPU_H
